package com.seeyon.apps.gkcwplugin.dao;

import java.util.List;

import com.seeyon.apps.gkcwplugin.po.BankAccounts;
import com.seeyon.apps.gkcwplugin.po.ChailfBankPO;
import com.seeyon.apps.gkcwplugin.po.ChailfPJPO;
import com.seeyon.apps.gkcwplugin.po.ChailfPO;
import com.seeyon.apps.gkcwplugin.po.ChailfSonPO;
import com.seeyon.apps.gkcwplugin.po.ChailfSonVO;
import com.seeyon.apps.gkcwplugin.po.ChailfeiVO;
import com.seeyon.apps.gkcwplugin.po.ContactUnit;
import com.seeyon.apps.gkcwplugin.po.DepartmentPO;
import com.seeyon.apps.gkcwplugin.po.DeptToSubject;
import com.seeyon.apps.gkcwplugin.po.FapiaoKjBankPO;
import com.seeyon.apps.gkcwplugin.po.FapiaoKjPJPO;
import com.seeyon.apps.gkcwplugin.po.FapiaoKjPO;
import com.seeyon.apps.gkcwplugin.po.FapiaoRzPJPO;
import com.seeyon.apps.gkcwplugin.po.FapiaoRzPO;
import com.seeyon.apps.gkcwplugin.po.FapiaoRzSonVO;
import com.seeyon.apps.gkcwplugin.po.FapiaoRzVO;
import com.seeyon.apps.gkcwplugin.po.FinancialDataPO;
import com.seeyon.apps.gkcwplugin.po.FukuanBankPO;
import com.seeyon.apps.gkcwplugin.po.FukuanBankVO;
import com.seeyon.apps.gkcwplugin.po.FukuanPJPO;
import com.seeyon.apps.gkcwplugin.po.FukuanPO;
import com.seeyon.apps.gkcwplugin.po.FukuanSonPO;
import com.seeyon.apps.gkcwplugin.po.FukuanSonVO;
import com.seeyon.apps.gkcwplugin.po.FukuanVO;
import com.seeyon.apps.gkcwplugin.po.HetongBankPO;
import com.seeyon.apps.gkcwplugin.po.HetongPJPO;
import com.seeyon.apps.gkcwplugin.po.HetongPO;
import com.seeyon.apps.gkcwplugin.po.HetongSonPO;
import com.seeyon.apps.gkcwplugin.po.HuiKuanBankPO;
import com.seeyon.apps.gkcwplugin.po.HuiKuanPJPO;
import com.seeyon.apps.gkcwplugin.po.HuiKuanPO;
import com.seeyon.apps.gkcwplugin.po.HuiKuanSonPO;
import com.seeyon.apps.gkcwplugin.po.LaowufeiVO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjBankPO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjNbSonVO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjNbVO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjPJPO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjPO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjSonPO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjSonVO;
import com.seeyon.apps.gkcwplugin.po.NeibuZjVO;
import com.seeyon.apps.gkcwplugin.po.Personnel;
import com.seeyon.apps.gkcwplugin.po.SubjectPO;
import com.seeyon.apps.gkcwplugin.po.ZiJinRZPO;
import com.seeyon.apps.gkcwplugin.po.ZiJinRZSonPO;
import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem;
import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItemPO;
import com.seeyon.ctp.common.po.filemanager.Attachment;
import com.seeyon.ctp.organization.po.OrgPrincipal;

public interface DealDataDao {
	//保存核算部门
	public void saveDeptList(List<DepartmentPO> depList);
	public void updateDeptList(List<DepartmentPO> deptList);
	//保存核算科目
	public void saveSubjectList(List<SubjectPO> subjectList);
	public void updateSubjectList(List<SubjectPO> subjectList);
	
	public void saveDeptSubject(List<DeptToSubject> deptToSubjectList);
	//保存核算人员
	public void savePersonnelList(List<Personnel> personnelList);
	public void updatePersonList(List<Personnel> personnelList);
	//保存银行账户
	public void saveBankAccountsList(List<BankAccounts> bankAccounts);
	public void updateBankAccountList(List<BankAccounts> bankAccounts);
	//保存往来单位
	public void saveContactUnitList(List<ContactUnit> contactUnitList);
	public void updateContactUnitList(List<ContactUnit> contactUnitList);
	//根据往来单位内码查询
	public ContactUnit findContactUnitByNm(String LSWLDW_LSWLDWID);
	//根据部门标识查询记录
	public DepartmentPO findDeptById(String LSBMZD_ID);
	//根据人员id查询记录
	public Personnel findPersonById(String LSZGZD_ID);
	//根据数据内码查询记录
	public BankAccounts findBankAccountsByNm(String BANKACCOUNTID);
	//根据科目内码查询记录
	public SubjectPO findSubjectById(String ZWKMZD_ID);
	//根据表单id查询付款审批表
	public FukuanVO findFukuanById(Long id);
	//根据付款审批表的id查询子表信息
	public List<FukuanSonVO> findFukuanSon(Long formrecordId);
	//根据id查询劳务费发放单审批表
	public LaowufeiVO findLaowufById(Long id);
	//根据id查询发票入账单
	public FapiaoRzVO findFapiaoRzById(Long id);
	//根据发票入账单的id查询子表信息
	public List<FapiaoRzSonVO> findFapiaoRzSon(Long formrecordId);
	//根据id查询差旅费报销单
	public ChailfeiVO findChailfById(Long id);
	//根据差旅费报销单的id查询子表信息
	public List<ChailfSonVO> findChailfSon(Long formrecordId);
	//根据id查询内部资金拨付单
	public NeibuZjVO findNeibuZjById(Long id);
	//根据内部资金拨付单id查询子表信息
	public List<NeibuZjSonVO> findNeibuZjSon(Long formrecordId);
	//根据id查询内部资金拨付单（内部路径）
	public NeibuZjNbVO findNeibuZjNbById(Long id);
	//根据内部资金拨付单（内部路径）id查询子表信息
	public List<NeibuZjNbSonVO> findNeibuZjNbSon(Long formrecordId);
	//根据协同id查询是否有附件信息,内部资金拨付单的附件在表单里面选所以和其他表单的查询附件用的字段不一样
	public List<Attachment> attachmentList(String attReferenceId,boolean flag);
	//根据核算人员的部门编号、单位编号查询核算部门表，获取部门名称和单位名称
	public DepartmentPO findDeptByCode(String deptCode,String unitCode);
	//根据单位编号查询单位
	public ContactUnit findUnitByCode(String unitCode);
	//保存财务表单信息
	public void saveFinancialData(FinancialDataPO po);
	//更新财务表单信息
	public void updateFinancialData(FinancialDataPO po);
	//查询枚举
	public CtpEnumItemPO getEnum(String id);
	public boolean saveFinancial(FinancialDataPO po);
	public List<FinancialDataPO> selectFinancial();
	public int updateFinancial(long id,String state,int num);
	
	public List<SubjectPO> findSubjectByBh(String kmbh);
	public SubjectPO findSubjectPo(String kmbh);
	
	public List<DeptToSubject> findDeptSubjectList(String kmnm);
	public void updateDeptSubjectList(List<DeptToSubject> list);
	//根据付款审批表的id查询付款银行信息
	public List<FukuanBankVO> findFukuanBank(Long formrecordId);
	
	//根据表单id查询付款审批表
	public FukuanPO findFukuanPOById(Long id);
	//根据付款审批表的id查询子表信息
	public List<FukuanPJPO> findFukuanPJPO(Long formrecordId);
	//根据付款审批表的id查询子表信息
	public List<FukuanSonPO> findFukuanSonPO(Long formrecordId);
	//根据付款审批表的id查询付款银行信息
	public List<FukuanBankPO> findFukuanBankPO(Long formrecordId);
	//根据付款审批表付款银行信息的id查询付款银行信息
	public FukuanBankPO findFukuanBankPOById(String pzh);
	//更新付款审批表的付款银行信息
	public void updateFukuanBankPOData(FukuanBankPO po);
	
	//根据表单id查询资金入账申请表
	public ZiJinRZPO findZiJinRZPOById(Long id);
	//根据资金入账申请表的id查询子表信息
	public List<ZiJinRZSonPO> findZiJinRZSonPO(Long formrecordId);
//	//根据资金入账申请表的id查询付款银行信息
//	public List<ZiJinRZBankPO> findZiJinRZBankPO(Long formrecordId);
//	//根据资金入账申请表付款银行信息的id查询付款银行信息
//	public ZiJinRZBankPO findZiJinRZBankPOById(String pzh);
//	//更新资金入账申请表的付款银行信息
//	public void updateZiJinRZBankPOData(ZiJinRZBankPO po);
	public void updateZiJinRZPOData(ZiJinRZPO po);
	
	//根据表单id查询内部资金拨付申请表
	public NeibuZjPO findNeibuZjPOById(Long id);
	//根据内部资金拨付申请表的id查询子表信息
	public List<NeibuZjPJPO> findNeibuZjPJPO(Long formrecordId);
	//根据内部资金拨付申请表的id查询子表信息
	public List<NeibuZjSonPO> findNeibuZjSonPO(Long formrecordId);
	//根据内部资金拨付申请表的id查询付款银行信息
	public List<NeibuZjBankPO> findNeibuZjBankPO(Long formrecordId);
	//根据内部资金拨付申请表付款银行信息的id查询付款银行信息
	public NeibuZjBankPO findNeibuZjBankPOById(String pzh);
	//更新内部资金拨付申请表的付款银行信息
	public void updateNeibuZjBankPOData(NeibuZjBankPO po);
	
	//根据表单id查询合同款拨付审批单
	public HetongPO findHetongPOById(Long id);
	//根据合同款拨付审批单的id查询子表信息
	public List<HetongPJPO> findHetongPJPO(Long formrecordId);
	//根据合同款拨付审批单的id查询子表信息
	public List<HetongSonPO> findHetongSonPO(Long formrecordId);
	//根据合同款拨付审批单的id查询付款银行信息
	public List<HetongBankPO> findHetongBankPO(Long formrecordId);
	//根据合同款拨付审批单付款银行信息的id查询付款银行信息
	public HetongBankPO findHetongBankPOById(String pzh);
	//更新合同款拨付审批单的付款银行信息
	public void updateHetongBankPOData(HetongBankPO po);
	
	//根据表单id查询差旅费报销单
	public ChailfPO findChailfPOById(Long id);
	//根据差旅费报销单的id查询子表信息
	public List<ChailfPJPO> findChailfPJPO(Long formrecordId);
	//根据差旅费报销单的id查询子表信息
	public List<ChailfSonPO> findChailfSonPO(Long formrecordId);
	//根据差旅费报销单的id查询付款银行信息
	public List<ChailfBankPO> findChailfBankPO(Long formrecordId);
	//根据差旅费报销单付款银行信息的id查询付款银行信息
	public ChailfBankPO findChailfBankPOById(String pzh);
	//更新差旅费报销单的付款银行信息
	public void updateChailfBankPOData(ChailfBankPO po);
	
	
	//根据表单id查询差旅费报销单
	public FapiaoRzPO findFapiaoRzPOById(Long id);
	//根据差旅费报销单的id查询子表信息
	public List<FapiaoRzPJPO> findFapiaoRzPJPO(Long formrecordId);
	public void updateFapiaoRzPOData(FapiaoRzPO po);
	
	//根据表单id查询发票开具
	public FapiaoKjPO findFapiaoKjPOById(Long id);
	//根据发票开具的id查询子表信息
	public List<FapiaoKjPJPO> findFapiaoKjPJPO(Long formrecordId);
	//根据发票开具的id查询付款银行信息
	public List<FapiaoKjBankPO> findFapiaoKjBankPO(Long formrecordId);
	//根据发票开具付款银行信息的id查询付款银行信息
	public FapiaoKjBankPO findFapiaoKjBankPOById(String pzh);
	//更新发票开具的付款银行信息
	public void updateFapiaoKjBankPOData(FapiaoKjBankPO po);
		
	List<OrgPrincipal> getPrincipaByMemberId(long paramLong);
	
	//根据表单id查询内部资金拨付申请表
	public HuiKuanPO findHuiKuanPOById(Long id);
	//根据内部资金拨付申请表的id查询子表信息
	public List<HuiKuanPJPO> findHuiKuanPJPO(Long formrecordId);
	//根据内部资金拨付申请表的id查询子表信息
	public List<HuiKuanSonPO> findHuiKuanSonPO(Long formrecordId);
	//根据内部资金拨付申请表的id查询付款银行信息
	public List<HuiKuanBankPO> findHuiKuanBankPO(Long formrecordId);
	//根据内部资金拨付申请表付款银行信息的id查询付款银行信息
	public HuiKuanBankPO findHuiKuanBankPOById(String pzh);
	//更新内部资金拨付申请表的付款银行信息
	public void updateHuiKuanBankPOData(HuiKuanBankPO po);
	
}
